package com.yidu.service.impl;


import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.yidu.comment.Tools;
import com.yidu.dao.SnAuditMapper;
import com.yidu.dao.SnBranchMapper;
import com.yidu.dao.SnFinanceMapper;
import com.yidu.model.SnAudit;
import com.yidu.model.SnBranch;
import com.yidu.model.SnFinance;
import com.yidu.model.SnUser;
import com.yidu.service.SnBranchService;

/**
 * 分公司的实现类
 * @author 盛豪
 * @date 2018年11月29日
 * @version 1.0
 */
@Service
public class SnBranchServiceImpl implements SnBranchService{
	/**
	 * 注入分公司mapper
	 */
	@Resource
	private SnBranchMapper branchMapper;
	/**
	 * 注入财务mapper
	 */
	@Resource
	private SnFinanceMapper snMapper;
	/**
	 * 注入审核mapper
	 */
	@Resource
	SnAuditMapper auditMapper;
	
	@Override
	public List<SnBranch> selectAll(Map<String,Object> map) {
		List<SnBranch> list = branchMapper.selectAll(map);
		
 
		return list ;
	}
	/**
	 * 根据id删除的实现类
	 */
	@Override
	public int deleteByPrimaryKey(String braId) {
		//调用财务dao snMapper的根据分公司id删除方法
		int row = snMapper.delete(braId);
		//调用分公司dao branchMapper的根据主键删除的方法
		int rows = branchMapper.deleteByPrimaryKey(braId);
		//返回rows
		return rows;
	}

	 	
	/**
	 * 增加的实现类
	 */
	@Override
	public int insert(SnBranch scBranch) {
		//定义随机数
		String  uuid = UUID.randomUUID().toString().replaceAll("-", "");
		//设置分公司id为随机数
		scBranch.setBraId(uuid);
		//调用分公司dao 的增加的方法
		int rows = branchMapper.insert(scBranch);
		return  rows;
	}
	
	/**
	 * 查询行数
	 */
	@Override
	public int findCount(Map<String, Object> maps) {
		// 调用分公司dao的查询行数的方法
		return branchMapper.findCount(maps);
	}

	/**
	 * 根据id查询
	 */
	@Override
	public SnBranch selectByPrimaryKey(String braId) {
		//调用分公司dao的根据id查询的方法
		return branchMapper.selectByPrimaryKey(braId);
	}
	
	/**
	 * 增加或修改的实现类
	 */
	@Override
	public int addOrUpdate(SnBranch snBranch) {
		//new一个财务类
		SnFinance snfinance=new SnFinance();
		//定义rows为0
		int  rows =0;
		//if判断如果分公司id不为空
		if (snBranch.getBraId()!=null && !"".equals(snBranch.getBraId())) {
			//rows就为调用分公司dao的根据id修改的方法
			rows=branchMapper.updateByPrimaryKeySelective(snBranch);
		}else{
			//定义随机数
			String  uuid = UUID.randomUUID().toString().replaceAll("-", "");
			//设置分公司id为随机数
			snBranch.setBraId(uuid);
			//设置财务id为随机数（调用尧哥工具类的随机数的方法）
			snfinance.setFinId(Tools.getRandomString());
			//设置财务钱为10000
			snfinance.setFinMoney(new BigDecimal(10000));
			//设置财务的外键分公司id
			snfinance.setBraId(snBranch.getBraId());
			//设置财务的默认值为1
			snfinance.setIsva(1);
			//设置财务的时间为当前时间
			snfinance.setOptime(Tools.getCurDate());
			//设置财务的操作人为分公司的操作人
			snfinance.setOper(snBranch.getOper());
			//rows为分公司dao的增加的方法
			rows=branchMapper.insert(snBranch);
			//判断rows不为空（增加成功）
			if(rows!=0) {
				//定义index来接收财务dao的增加方法
				int index=snMapper.insert(snfinance);
			}
			
			
		}
		return  rows;
	}
	
	
	/**
	 * 增加分公司的实现类
	 */
	@Override
	public int addBranch(String braId,SnBranch snbranch,SnUser user) {
		System.err.println("-------------------------------------------------------------");
		//设置分公司id
		snbranch.setBraId(braId);
		//设置分公司状态为审核通过
		snbranch.setSort(2);
		//调用分公司mapper的根据主键修改方法
		branchMapper.updateByPrimaryKeySelective(snbranch);
		//new一个审核类
		SnAudit audit=new SnAudit();
		//设置审核id
		audit.setAuId(Tools.getDateOrderNo());
		//外键id
		audit.setAllId(braId);
		//设置操作时间
		audit.setOptime(Tools.getCurDateTime());
		//设置审核auidea
		audit.setAuIdea(audit.getAuIdea());
		//设置审核状态为审核
		audit.setAuState(1);
		//设置操作人为当前对象
		audit.setOper(user.getUserName());
		//设置审核备注
		audit.setAuComment("加盟审核");
		//返回审核dao的增加的方法
		return auditMapper.insert(audit);
	}
	
	
	/**
	 * 查询分公司所有的实现类
	 */
	@Override
	public List<SnBranch> findBraAllSum(Map<String, Object> maps) {
		return branchMapper.findBraAllSum(maps);
	}
	
	
	/**
	 * 查询分公司所有行数的实现类
	 */
	@Override
	public int findBraCountSum(Map<String, Object> maps) {
		return branchMapper.findBraCountSum(maps);
	}
	
	
	/**
	 * 增加审核的实现类
	 */
	@Override
	public int addProAudit(SnAudit audit, SnUser user) {
		SnAudit aud=auditMapper.selectByPrimaryKey(audit.getAuId());
		//调用修改的方法
		int rows=auditMapper.updateByPrimaryKeySelective(audit);
		//new一个审核类
		SnAudit snAudit=new SnAudit();
		//设置审核id
		snAudit.setAuId(Tools.getDateOrderNo());
		//设置审核外键
		snAudit.setAllId(audit.getAuId());
		//设置审核备注
		snAudit.setAuComment(audit.getAuComment());
		//设置审核意见
		snAudit.setAuIdea(audit.getAuIdea());
		//设置审核状态
		snAudit.setAuState(audit.getAuState());
		//设置审核时间
		snAudit.setOptime(Tools.getCurDateTime());
		//设置审核操作人
		snAudit.setOper(user.getUserName());
		//定义row来接收审核dao的增加方法
		int row=auditMapper.insertSelective(snAudit);
		//判断审核状态不为空
		if(snAudit.getAuState()!=null && !"".equals(snAudit.getAuState())) {
			//判断审核状态为未通过或者为其它
			if(snAudit.getAuState()==3 || snAudit.getAuState()==4) {
				System.out.println("----------------打回-----------------");
				//new一个分公司类
				SnBranch branch=new SnBranch();
				//设置分公司id为审核表的外键id
				branch.setBraId(aud.getAllId());
				//设置排序为1
				branch.setSort(1);
				//调用分公司dao修改的方法
				branchMapper.updateByPrimaryKeySelective(branch);
				//判断state为2
			} else if(snAudit.getAuState()==2) {
				System.err.println("**************审核通过***************");
				//new一个分公司类
				SnBranch branch=new SnBranch();
				//设置分公司id为外键id
				branch.setBraId(aud.getAllId());
				//设置sort为2
				branch.setSort(2);
				//调用修改的方法
				branchMapper.updateByPrimaryKeySelective(branch);
			}
			
		}
		
		
		
		if(row==1 && rows==1) {
			return 1;
		}else {
			return 0;
		}
		
	}
 
}
